package com.shanshan.wheel.rpc.common.remoting.dto;

import com.shanshan.wheel.rpc.common.provider.RpcServiceProperties;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @Description 服务调用请求对象
 * @ClassName RpcRequest
 * @Author 山山大魔王
 * @Date 2022/9/4 15:03
 * @Version 1.0
 */
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class RpcRequest implements Serializable {
    // 请求id
    private String requestId;
    // 服务接口名
    private String interfaceName;
    // 服务方法名
    private String methodName;
    // 请求参数
    private Object[] parameters;
    // 请求参数类型
    private Class<?>[] paramTypes;
    // 服务版本号
    private String version;
    // 接口有多个实现类时的标识
    private String group;

    public RpcServiceProperties toRpcProperties(){
        return RpcServiceProperties.builder().serviceName(this.getInterfaceName())
                .version(this.getVersion())
                .group(this.getGroup()).build();
    }

}
